home *** CD-ROM | disk | FTP | other *** search
- /* este script saca el listado del BASIC presente en la memoria del */
- /* Cpectrum y lo graba como fichero */
-
- /* comprobamos si el emulador está presente */
- address command
-
- if ~show(ports,ZXAM_REXX) then do
- requestchoice '>nil: title "ZXAM Script error..." body "No encuentro el puerto del emulador!!" gadgets "AARGH!"'
- exit
- end
-
- /* debemos listar el BASIC. primero lo localizamos */
-
- /* dir inicio del BASIC (variable PROG) */
- baselist=zxamdpeek(23635)
-
- /* longitud del programa BASIC (con variable VARS) */
- endlist=zxamdpeek(23627)
-
- /* calculamos tamaño */
- longbasic=endlist-baselist
- if longbasic=0 then do
- requestchoice '>nil: title "ZXAM Script error..." body "No hay programa BASIC!!" gadgets "AARGH!"'
- exit 0
- end
-
- /* cogemos toda el area BASIC */
- bloquebasic=zxamgetmem(baselist,endlist-baselist)
-
-
- /* pedimos el nombre y path del fichero */
- oldpath=zxamactsavepath()
- oldpattern=zxamactpattern()
- zxampattern('#?')
- nombre=zxamsaverequester('Nombre para listado BASIC...','ram:')
- zxamsavepath(oldpath)
- zxampattern(oldpattern)
- if nombre='' then exit 0 /* pulsado el CANCEL */
-
- if ~open('fichero',nombre,'w') then exit 0
-
- oldname=zxamactname() /* nombre actual */
- oldformat=zxamactformat() /* formato actual */
-
- ZXAMEnableAbort() /* activa gadget Abort ARexx */
-
- do forever
-
- /* procesamos la linea */
-
- /* imprimimos numero de linea */
- numlinea=c2d(left(bloquebasic,2))
- dummy=writech('fichero',' 'numlinea)
- zxamnameformat(' Convirtiendo linea 'numlinea,'Espera...')
- longline=c2d(reverse(substr(bloquebasic,3,2))) /* fomato invertido Z80 */
- do i=5 to 4+longline /* para procesar los caracteres de la linea */
- if substr(bloquebasic,i,1)='0e'x then do
- i=i+5
- iterate
- end
- dummy=writech('fichero',zxambasictoken(substr(bloquebasic,i,1)))
-
- if zxamreadabort() then do
- if oldname='' then
- zxamclearnameformat()
- else
- zxamnameformat(oldname,oldformat)
- exit
- end
-
- end i
-
- dummy=writech('fichero','0a'x)
-
- bloquebasic=right(bloquebasic,length(bloquebasic)-(longline+4))
- if bloquebasic='' then break
- end
-
- dummy=close('fichero')
-
- if oldname='' then
- zxamclearnameformat()
- else
- zxamnameformat(oldname,oldformat)
-
- exit
-